package com.dbms.common;

import java.io.Serializable;
import java.util.List;

/**
 * `Schema` 类代表了数据表或查询结果的元数据结构。
 * 它本质上是一个有序的 `Column` 对象的列表，定义了每一列的名称、类型等信息。
 * 实现了 Serializable 接口，以便可以在网络上传输或持久化。
 */
public class Schema implements Serializable {
    // 使用一个列表来存储构成此Schema的所有列。列表保证了列的顺序。
    private final List<Column> columns;

    /**
     * Schema 的构造函数。
     * @param columns 一个包含所有列对象的列表。
     */
    public Schema(List<Column> columns) {
        this.columns = columns;
    }

    /**
     * 获取所有的列。
     * @return 包含所有 Column 对象的列表。
     */
    public List<Column> getColumns() {
        return columns;
    }

    /**
     * 根据索引获取指定的列。
     * @param index 列的索引（从0开始）。
     * @return 对应索引的 Column 对象。
     */
    public Column getColumn(int index) {
        return columns.get(index);
    }

    /**
     * 获取列的总数。
     * @return Schema中的列数量。
     */
    public int getColumnCount() {
        return columns.size();
    }
}